/**
 * typescript中的抽象类特点:
    它是提供其他类继承的基类, 不能直接被实例化。
    用abstract关键字定义抽象类和抽象方法，抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。
    abstract抽象方法只能放在抽象类里面
    抽象类和抽象方法用来定义标准
    标准:
 */
{

    abstract class Person1 {
        // public name: string;
        // constructor(name: string) {
        //     this.name = name;
        // }
        abstract eat(): any; //抽象 方法不包含具体实现并且必须在派生类中实现。
        run() {
            console.log('其他方法可以不实现')
        }
    }
    // var a=new Person1() /* 错误的写法--抽象类不能直接被实例化*/
    // 抽象方法必须在派生类中实现:

    class Male extends Person1 {
        eat() {
            throw new Error("Method not implemented.")
        }
        run(): void {
            console.log('男生在跑')
        }
    }
    let m: Male = new Male()
    m.run()
}
